<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="../js/a.js"></script>
    <script>
      // 高阶函数：以函数作为输入或者是输出的函数被称为高阶函数；
      // cb: callback :回调
      // i/o
      // function fn(a,b,c){
      //     console.log("函数fn的逻辑");
      //     return a+b+c;
      // }

      // 1.以函数作为输入就是回调
      // function fn(a){
      //     // console.log(a);
      //     a();
      // }

      // fn(function(){
      //     console.log(123);
      // });

      // 一般前提下 回调是用来解决异步问题；
      // fn(function(){
      //     console.log(111);
      // });

      // 2.以函数作为输出；
      //     function fn(){
      //         return {name:123};
      //     }
      //    var res =  fn();
      //    console.log(res);

      // function fn(){
      //     console.log("我是fn函数");
      //     return function(){
      //         console.log("我是返还的函数");
      //     }
      // }
      // var res = fn();
      // res();

      // function add(a,b,c){
      //     return a + b + c;
      // }

      // 以函数作为输出的函数；
      function add(a) {
        return function (b) {
          return function (c) {
            return a + b + c;
          };
        };
      }

      var res = add(1)(2)(3);
      console.log(res);
    </script>
  </body>
</html>
